package utils

import (
	"fmt"
	"time"

	"github.com/beego/beego/v2/adapter/logs"
	"github.com/dgrijalva/jwt-go"
)

var (
	KEY = []byte("5Mb5Gdmb5y")
)

// 发放token
func GenToken(account string) string {
	token := jwt.New(jwt.SigningMethodHS256)
	token.Claims = &jwt.StandardClaims{
		NotBefore: int64(time.Now().Unix()),
		ExpiresAt: int64(time.Now().Unix() + 90*24*60*60),
		Issuer:    APPNAME,
		Subject:   account,
	}
	ss, err := token.SignedString(KEY)
	if err != nil {
		logs.Error(err)
		return ""
	}
	return ss
}

// 校验token
func CheckToken(account, token string) bool {
	t, err := jwt.Parse(token, func(*jwt.Token) (interface{}, error) {
		return KEY, nil
	})
	if err != nil {
		fmt.Println(err.Error())
		return false
	}
	if account != t.Claims.(jwt.MapClaims)["sub"] {
		return false
	}
	return t.Valid
}
